.\" Process this file with
.\" groff -man -Tascii bdep-projects-configs.1
.\"
.TH bdep-projects-configs 1 "June 2024" "bdep 0.17.0"
.SH NAME
\fBbdep-projects-configs\fR \- specifying projects and configurations
.SH "SYNOPSIS"
.PP
\fBbdep\fR \fIcommand\fR [\fIpkg-spec\fR] [\fIcfg-spec\fR] \.\.\.\fR
.PP
\fIcfg-spec\fR = (\fB@\fR\fIcfg-name\fR | \fB--config\fR|\fB-c\fR
\fIcfg-dir\fR)\.\.\. | \fB--all\fR|\fB-a\fR
.br
\fIpkg-spec\fR = (\fB--directory\fR|\fB-d\fR \fIpkg-dir\fR)\.\.\. |
\fIprj-spec\fR
.br
\fIprj-spec\fR = \fB--directory\fR|\fB-d\fR \fIprj-dir\fR\fR
.SH "DESCRIPTION"
.PP
Most \fBbdep\fR commands operate on a project or some of its packages as well
as its build configurations\. For example, \fBstatus\fR (\fBbdep-status(1)\fP)
shows the status of one or more project packages in one or more build
configurations\. While \fBfetch\fR (\fBbdep-fetch(1)\fP) fetches the list of
available to the project dependency packages, again, in one or more build
configurations\.
.PP
Without any \fB--directory\fR|\fB-d\fR\fR options specified, the current
working directory is assumed to be either the project root directory, the
package root directory, or one of the package subdirectories\. This is the
common \fBbdep\fR usage mode where you run it from within your project's
source code directories, similar to version control tools such as
\fBgit(1)\fR\.
.PP
Alternatively, the project or (several) package directories can be specified
with the \fB--directory\fR|\fB-d\fR\fR options\. Note that \fBbdep\fR operates
on a single project but potentially multiple packages belonging to said
project at a time\.
.PP
Some \fBbdep\fR commands, such as \fBfetch\fR, operate on the whole project\.
If such a command is given a package directory (either as the working
directory or with \fB--directory\fR|\fB-d\fR\fR), then it automatically
determines its project directory and uses that\.
.PP
Other commands, such as \fBstatus\fR, operate on one or more packages\. If
such a command is given a project directory, then it automatically determines
the list of packages belonging to this project and uses that\. Note that what
exactly \fIbelonging\fR means is command-specific\. For most commands it means
all the packages initialized in a given build configuration\. For \fBinit\fR
(\fBbdep-init(1)\fP), however, it means all the packages available in the
project (for example, as listed in \fBpackages\.manifest\fR)\.
.PP
A project managed by \fBbdep\fR has one or more associated build
configurations (see \fBbdep-config(1)\fP for details)\. Some of these
configurations, one per the configuration type, can be designated as default
and used if no configuration is specified explicitly\. So, for example,
running \fBstatus\fR without any arguments in the project directory will show
the status of all the project packages initialized in the default
configurations\.
.PP
An associated build configuration can be assigned a name in which case we can
specify it using the \fB@\fR\fIcfg-name\fR\fR notation\. For example:
.PP
.nf
$ bdep status @gcc @clang
.fi
.PP
Note to Windows users: a command line argument with leading \fB@\fR has a
special meaning in PowerShell\. To work around this, you can use the
alternative \fB-@gcc\fR syntax or the \fB-n\ gcc\fR option\.
.PP
A configuration without a name can be specified as a directory using the
\fB--config\fR|\fB-c\fR\fR option\. Name and directory specifications can be
mixed\. For example:
.PP
.nf
$ bdep status @gcc -c \.\./builds/clang
.fi
.PP
Finally, we can use the \fB--all\fR|\fB-a\fR\fR option to specify all the
build configurations associated with the project\.
.SH BUGS
Send bug reports to the users@build2.org mailing list.
.SH COPYRIGHT
Copyright (c) 2014-2024 the build2 authors.

Permission is granted to copy, distribute and/or modify this document under
the terms of the MIT License.
